home *** CD-ROM | disk | FTP | other *** search
Text File | 2001-02-20 | 1.6 KB | 66 lines | [AMAS/AMAP] |
- // -* SpinBehavior.js *-
- //
- // Name: Spin behavior
- // Description:
- // Author:
- // Version: $Id: SpinBehavior.js,v 1.9 2000/12/21 15:03:30 consumer Exp $
- //
-
- // Keep an array of the solids using this behavior
- var spinSolids = new Array(1);
-
- function SpinBehavior(solidName, axe, speed)
- {
- // Member methods of the behavior
- this.start = SpinBehaviorStart;
- this.stop = SpinBehaviorStop;
-
- // Convert turn/mn to rad/s;
- var speed = (speed * Math.PI * 2.0) / 60.0;
- this.angularVelocity = TSMakeStringFromVector(TSVectorMultiply(axe, speed));
- this.solidName = solidName;
- this.dampingID = TSMakeUniqID("DampingForce_" + solidName);
- }
-
- function SpinBehaviorStart()
- {
- // Suppress the damping force
- TSMakeDampingSolidForce(this.dampingID, 0.0, 0.0);
- TSAppendChild(this.solidName, this.dampingID);
- TSUpdateNode(this.dampingID);
-
- // Set the angular velocity
- TSUpdateNodeAttribute(this.solidName, 'angularVelocity', this.angularVelocity);
- }
-
- function SpinBehaviorStop()
- {
- TSUpdateNodeAttribute(this.solidName, 'angularVelocity', '0 0 0');
- TSRemoveNode(this.dampingID);
- }
-
- //
- // Event functions
- //
-
- function SpinBehaviorStartEvent(obj, event)
- {
- if (spinSolids[obj] == null) {
- var axe = TSMakeVectorFromString(TSGetExtraParam(event, 'axis'));
- var speed = TSGetExtraParam(event, 'speed');
- var targetSolid = TSGetExtraParam(event, 'targetSolid');
-
- if (targetSolid == "")
- spinSolids[obj] = new SpinBehavior(obj, axe, speed);
- else
- spinSolids[obj] = new SpinBehavior(targetSolid, axe, speed);
- }
-
- spinSolids[obj].start();
- }
-
- function SpinBehaviorStopEvent(obj, event)
- {
- spinSolids[obj].stop();
- }
-